1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
use crate::co;
use crate::prelude::*;
/// Generic
/// [window message](https://learn.microsoft.com/en-us/windows/win32/winmsg/about-messages-and-message-queues)
/// parameters: `WPARAM` and `LPARAM`.
///
/// All message types can be converted to `WndMsg` via the
/// [`as_generic_wm`](crate::prelude::MsgSend::as_generic_wm) method.
///
/// Return type: `isize`.
#[derive(Clone, Copy, Debug)]
pub struct WndMsg {
/// The [`co::WM`](crate::co::WM) constant that identifies the window
/// message.
pub msg_id: co::WM,
/// First message parameter.
pub wparam: usize,
/// Second message parameter.
pub lparam: isize,
}
unsafe impl MsgSend for WndMsg {
type RetType = isize;
fn convert_ret(&self, v: isize) -> Self::RetType {
v
}
fn as_generic_wm(&mut self) -> Self {
*self
}
}
unsafe impl MsgSendRecv for WndMsg {
fn from_generic_wm(p: Self) -> Self {
p
}
}
impl WndMsg {
/// Creates a new `WndMsg` from the given message parameters.
#[must_use]
pub const fn new(msg_id: co::WM, wparam: usize, lparam: isize) -> WndMsg {
Self { msg_id, wparam, lparam }
}
}